package cruciverba.controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JTextField;

import cruciverba.model.ContaCaratteriComuni;
import cruciverba.model.ElencaIntersezioniStringhe;
import cruciverba.model.Verifica;
import cruciverba.model.ContaCaratteriNonItaliani;
import cruciverba.model.VerificaStringaPalindroma;
import cruciverba.ui.CruciverbaArea;
import cruciverba.ui.CruciverbaMenu;

public class MenuCtrl {

	private Verifica verifica;
	private CruciverbaArea area;
	private JTextField field;

	public MenuCtrl(CruciverbaMenu menu, Verifica verifica, CruciverbaArea area, JTextField field) {
		super();
		this.verifica = verifica;
		this.area = area;
		this.field = field;
		setMenuCtrl(menu);

	}

	private void setMenuCtrl(CruciverbaMenu menu) {
		menu.getItem01().addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				verifica.setTipo_verifica(menu.getItem01().getText());
				field.setEnabled(true);
				verifica.setVerificator(new VerificaStringaPalindroma());
				clear();
			}

			
		});

		menu.getItem02().addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				verifica.setTipo_verifica(menu.getItem02().getText());
				field.setEnabled(true);
				verifica.setVerificator(new ContaCaratteriNonItaliani());
				clear();
			}
		});

		menu.getItem03().addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				verifica.setTipo_verifica(menu.getItem03().getText());
				field.setEnabled(true);
				verifica.setVerificator(new ContaCaratteriComuni());
				clear();
			}
		});

		menu.getItem04().addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				verifica.setTipo_verifica(menu.getItem04().getText());
				field.setEnabled(true);
				verifica.setVerificator(new ElencaIntersezioniStringhe());
				clear();
			}
		});
	}
	private void clear() {
		area.setText(null);
		field.setText(null);
	}

}
